// Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.geocities.com/kpdus/jad.html // Decompiler options: braces fieldsfirst space lnc package com.edmodo.cropper.cropwindow; import android.content.Context; import android.content.res.Resources; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Path; import android.graphics.Rect; import android.graphics.RectF; import android.util.AttributeSet; import android.util.Pair; import android.util.TypedValue; import android.view.MotionEvent; import android.view.View; import android.view.ViewParent; import cn.com.smartdevices.bracelet.Debug; import com.edmodo.cropper.cropwindow.edge.Edge; import com.edmodo.cropper.cropwindow.handle.Handle; import com.edmodo.cropper.util.AspectRatioUtil; import com.edmodo.cropper.util.HandleUtil; import com.edmodo.cropper.util.PaintUtil; public class CropOverlayView extends View { public static final float DEFAULT_SHOW_GUIDELINES_LIMIT = 100F; private static final int a = 6; private static final float b = 0F; private static final float c = 0F; private static final float d = 0F; private static final float e = 0F; private static final float f = 20F; private static final int g = 0; private static final int h = 1; private static final int i = 2; private static final int j = 0xb0000000; private static final int k = 1; private static final int l = 2; private static final String m = "CropOverlayView"; private int A; private boolean B; private float C; private float D; private float E; private int F; private Paint n; private Paint o; private Paint p; private Paint q; private Rect r; private float s; private float t; private Pair u; private Handle v; private boolean w; private int x; private int y; private float z; public CropOverlayView(Context context) { super(context); w = false; x = 1; y = 1; z = (float)x / (float)y; B = false; a(context); } public CropOverlayView(Context context, AttributeSet attributeset) { super(context, attributeset); w = false; x = 1; y = 1; z = (float)x / (float)y; B = false; a(context); } private void a() { if (v == null) { return; } else { v = null; invalidate(); return; } } private void a(float f1, float f2) { float f3 = Edge.LEFT.getCoordinate(); float f4 = Edge.TOP.getCoordinate(); float f5 = Edge.RIGHT.getCoordinate(); float f6 = Edge.BOTTOM.getCoordinate(); v = HandleUtil.getPressedHandle(f1, f2, f3, f4, f5, f6, s); if (v == null) { return; } else { u = HandleUtil.getOffset(v, f1, f2, f3, f4, f5, f6); invalidate(); return; } } private void a(Context context) { F = 1; android.util.DisplayMetrics displaymetrics = context.getResources().getDisplayMetrics(); s = HandleUtil.getTargetRadius(context); t = TypedValue.applyDimension(1, 6F, displaymetrics); n = PaintUtil.newBorderPaint(context); o = PaintUtil.newGuidelinePaint(); q = PaintUtil.newBackgroundPaint(context); p = PaintUtil.newCornerPaint(context); D = -TypedValue.applyDimension(1, d, displaymetrics); C = -D; E = TypedValue.applyDimension(1, 20F, displaymetrics); A = 1; } private void a(Canvas canvas) { float f1 = Edge.LEFT.getCoordinate(); float f2 = Edge.TOP.getCoordinate(); float f3 = Edge.RIGHT.getCoordinate(); float f4 = Edge.BOTTOM.getCoordinate(); float f5 = Edge.getWidth() / 3F; float f6 = f1 + f5; canvas.drawLine(f6, f2, f6, f4, o); float f7 = f3 - f5; canvas.drawLine(f7, f2, f7, f4, o); float f8 = Edge.getHeight() / 3F; float f9 = f2 + f8; canvas.drawLine(f1, f9, f3, f9, o); float f10 = f4 - f8; canvas.drawLine(f1, f10, f3, f10, o); } private void a(Canvas canvas, Rect rect) { float f1; float f2; float f3; float f4; f1 = Edge.LEFT.getCoordinate(); f2 = Edge.TOP.getCoordinate(); f3 = Edge.RIGHT.getCoordinate(); f4 = Edge.BOTTOM.getCoordinate(); canvas.save(); setLayerType(1, null); canvas.clipRect(new RectF(rect.left, rect.top, rect.right, rect.bottom)); if (F != 1) goto _L2; else goto _L1 _L1: Path path = new Path(); path.addCircle(f1 + (f3 - f1) / 2.0F, f2 + (f4 - f2) / 2.0F, (f4 - f2) / 2.0F - n.getStrokeWidth(), android.graphics.Path.Direction.CW); canvas.clipPath(path, android.graphics.Region.Op.DIFFERENCE); _L4: canvas.drawColor(0xb0000000); canvas.restore(); return; _L2: if (F == 2) { canvas.clipRect(f1, f2, f3, f4, android.graphics.Region.Op.DIFFERENCE); } if (true) goto _L4; else goto _L3 _L3: } private void a(Rect rect) { if ((rect.right - rect.left) * (rect.bottom - rect.top) <= 0) { Debug.i("CropOverlayView", "initCropWindow skipped 'cause bitmapRect is empty"); return; } if (!B) { B = true; } if (w) { if (AspectRatioUtil.calculateAspectRatio(rect) > z) { Edge.TOP.setCoordinate(rect.top); Edge.BOTTOM.setCoordinate(rect.bottom); float f6 = (float)getWidth() / 2.0F; float f7 = Math.max(60F, AspectRatioUtil.calculateWidth(Edge.TOP.getCoordinate(), Edge.BOTTOM.getCoordinate(), z)); if (f7 == 60F) { z = 60F / (Edge.BOTTOM.getCoordinate() - Edge.TOP.getCoordinate()); } float f8 = f7 / 2.0F; Edge.LEFT.setCoordinate(f6 - f8); Edge.RIGHT.setCoordinate(f6 + f8); return; } Edge.LEFT.setCoordinate(rect.left); Edge.RIGHT.setCoordinate(rect.right); float f3 = (float)getHeight() / 2.0F; float f4 = Math.max(60F, AspectRatioUtil.calculateHeight(Edge.LEFT.getCoordinate(), Edge.RIGHT.getCoordinate(), z)); if (f4 == 60F) { z = (Edge.RIGHT.getCoordinate() - Edge.LEFT.getCoordinate()) / 60F; } float f5 = f4 / 2.0F; Edge.TOP.setCoordinate(f3 - f5); Edge.BOTTOM.setCoordinate(f3 + f5); return; } else { float f1 = 0.1F * (float)rect.width(); float f2 = 0.1F * (float)rect.height(); Edge.LEFT.setCoordinate(f1 + (float)rect.left); Edge.TOP.setCoordinate(f2 + (float)rect.top); Edge.RIGHT.setCoordinate((float)rect.right - f1); Edge.BOTTOM.setCoordinate((float)rect.bottom - f2); return; } } private void b(float f1, float f2) { if (v == null) { return; } float f3 = f1 + ((Float)u.first).floatValue(); float f4 = f2 + ((Float)u.second).floatValue(); if (w) { v.updateCropWindow(f3, f4, z, r, t); } else { v.updateCropWindow(f3, f4, r, t); } invalidate(); } private void b(Canvas canvas) { float f1 = Edge.LEFT.getCoordinate(); float f2 = Edge.TOP.getCoordinate(); float f3 = Edge.RIGHT.getCoordinate(); float f4 = Edge.BOTTOM.getCoordinate(); canvas.drawLine(f1 - D, f2 - C, f1 - D, f2 + E, p); canvas.drawLine(f1, f2 - D, f1 + E, f2 - D, p); canvas.drawLine(f3 + D, f2 - C, f3 + D, f2 + E, p); canvas.drawLine(f3, f2 - D, f3 - E, f2 - D, p); canvas.drawLine(f1 - D, f4 + C, f1 - D, f4 - E, p); canvas.drawLine(f1, f4 + D, f1 + E, f4 + D, p); canvas.drawLine(f3 + D, f4 + C, f3 + D, f4 - E, p); canvas.drawLine(f3, f4 + D, f3 - E, f4 + D, p); } public static boolean showGuidelines() { return Math.abs(Edge.LEFT.getCoordinate() - Edge.RIGHT.getCoordinate()) >= 100F && Math.abs(Edge.TOP.getCoordinate() - Edge.BOTTOM.getCoordinate()) >= 100F; } protected void onDraw(Canvas canvas) { super.onDraw(canvas); float f1 = Edge.LEFT.getCoordinate(); float f2 = Edge.TOP.getCoordinate(); float f3 = Edge.RIGHT.getCoordinate(); float f4 = Edge.BOTTOM.getCoordinate(); a(canvas, r); if (showGuidelines()) { if (A == 2) { a(canvas); } else if (A == 1) { if (v != null) { a(canvas); } } else if (A != 0); } if (F == 2) { canvas.drawRect(f1, f2, f3, f4, n); } else { canvas.drawCircle(f1 + (f3 - f1) / 2.0F, f2 + (f4 - f2) / 2.0F, (f4 - f2) / 2.0F - n.getStrokeWidth(), n); } b(canvas); } protected void onSizeChanged(int i1, int j1, int k1, int l1) { a(r); } public boolean onTouchEvent(MotionEvent motionevent) { if (!isEnabled()) { return false; } switch (motionevent.getAction()) { default: return false; case 0: // '\0' a(motionevent.getX(), motionevent.getY()); return true; case 1: // '\001' case 3: // '\003' getParent().requestDisallowInterceptTouchEvent(false); a(); return true; case 2: // '\002' b(motionevent.getX(), motionevent.getY()); break; } getParent().requestDisallowInterceptTouchEvent(true); return true; } public void resetCropOverlayView() { if (B) { a(r); invalidate(); } } public void setAspectRatioX(int i1) { if (i1 <= 0) { throw new IllegalArgumentException("Cannot set aspect ratio value to a number less than or equal to 0."); } x = i1; z = (float)x / (float)y; if (B) { a(r); invalidate(); } } public void setAspectRatioY(int i1) { if (i1 <= 0) { throw new IllegalArgumentException("Cannot set aspect ratio value to a number less than or equal to 0."); } y = i1; z = (float)x / (float)y; if (B) { a(r); invalidate(); } } public void setBitmapRect(Rect rect) { r = rect; a(r); } public void setFixedAspectRatio(boolean flag) { w = flag; if (B) { a(r); invalidate(); } } public void setGuidelines(int i1) { if (i1 < 0 || i1 > 2) { throw new IllegalArgumentException("Guideline value must be set between 0 and 2. See documentation."); } A = i1; if (B) { a(r); invalidate(); } } public void setInitialAttributeValues(int i1, boolean flag, int j1, int k1) { if (i1 < 0 || i1 > 2) { throw new IllegalArgumentException("Guideline value must be set between 0 and 2. See documentation."); } A = i1; w = flag; if (j1 <= 0) { throw new IllegalArgumentException("Cannot set aspect ratio value to a number less than or equal to 0."); } x = j1; z = (float)x / (float)y; if (k1 <= 0) { throw new IllegalArgumentException("Cannot set aspect ratio value to a number less than or equal to 0."); } else { y = k1; z = (float)x / (float)y; return; } } static { b = PaintUtil.getCornerThickness(); c = PaintUtil.getLineThickness(); d = b / 2.0F - c / 2.0F; e = b / 2.0F + d; } }